package cdu.sl.domain.dto;

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import javax.validation.Valid;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import java.util.List;

/**
 * 修改学习集的数据传输对象
 */
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class StudySetUpdateDTO {

    /**
     * 学习集ID
     */
    @NotNull(message = "学习集ID不能为空")
    private Long id;

    /**
     * 学习集标题
     */
    @NotBlank(message = "学习集标题不能为空")
    private String title;

    /**
     * 学习集描述
     */
    @NotBlank(message = "学习集描述不能为空")
    private String description;

    /**
     * 是否公开
     */
    private Boolean isPublic;

    /**
     * 学习集权限设置 0-公开 1-私密 2-仅链接可见
     */
    private Integer visibility;

    /**
     * 学习语言
     */
    private String language;

    /**
     * 学习集类别/标签
     */
    private String category;

    /**
     * 学习集封面图片
     */
    private String coverImage;

    /**
     * 闪存卡列表
     */
    @NotEmpty(message = "闪存卡不能为空")
    @Size(min = 2, message = "学习集至少需要包含2张闪存卡")
    @Valid
    private List<FlashcardUpdateDTO> flashcards;
} 